#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   __init__.py
@Time    :   2024-07-09 13:04:31
@Author  :   chakcy 
@Email   :   947105045@qq.com
@description   :   controller层的路由自动发现和挂载
'''
import pkgutil   
from importlib import import_module

from fastapi import APIRouter

router = APIRouter()

def discover_and_mount_routers(base_package: str):
    """自动发现并挂载路由"""
    # 遍历base_package下的所有模块  
    package = import_module(base_package)  
    for _, module_name, _ in pkgutil.iter_modules(package.__path__, package.__name__ + '.'):  
        # 动态导入模块  
        module = import_module(module_name)     
        # 检查模块中是否有'router'属性，且属性值是APIRouter类型  
        if hasattr(module, 'router') and callable(getattr(module, 'router')):  
            # 检查模块中的'router'属性是否为APIRouter类型  
            if isinstance(module.router, APIRouter):
                # 挂载路由
                router.include_router(module.router)  
  
# # 使用该函数自动发现和挂载路由  
discover_and_mount_routers('app.controller') 

__all__ = ["router"]
 